# -*- coding: utf-8 -*-
"""
created on 2017/12/7 14:47

@author: didichen
"""


# 开始url：http://www.pythonchallenge.com/pc/def/map.html
# 结束url：http://www.pythonchallenge.com/pc/def/ocr.html

# 粗糙版本写法
def funStr(strIn):
    strInput = strIn
    strOutput = ""
    for i in range(len(strInput)):
        if strInput[i] == 'y':
            strOutput += 'a'
        elif strInput[i] == 'z':
            strOutput += 'b'
        elif strInput[i].isalpha():
            strOutput += chr(ord(strInput[i]) + 2)
        else:
            strOutput += strInput[i]
    return strOutput

# string.maketrans()版本写法

# 语法: str.maketrans(intab, outtab]);
#
# Python
# maketrans()方法用于创建字符映射的转换表，对于接受两个参数的最简单的调用方式，
# 第一个参数是字符串，表示需要转换的字符
# 第二个参数也是字符串表示转换的目标。
# 注：两个字符串的长度必须相同，为一一对应的关系。

# Python3.4已经没有string.maketrans()了，取而代之的是内建函数:bytearray.maketrans()、bytes.maketrans()、str.maketrans()

def funStr2(str_in):
    intab = "abcdefghijklmnopqrstuvwxyz"
    outtab = "cdefghijklmnopqrstuvwxyzab"
    str_trantab = str.maketrans(intab, outtab)
    return str_in.translate(str_trantab)

if __name__ == '__main__':
    str_input = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj. "
    print(funStr2(str_input))
    print(funStr2("map"))